# encoding:utf8

from flask import Flask

# render_template渲染模板，可以给html传递参数
from flask import render_template

# 根据视图函数名，获取路径
from flask import url_for

# 重定向
from flask import redirect

# 导入配置文件
import config

app = Flask(__name__)
# 加载配置文件
app.config.from_object(config)


# 装饰器
@app.route('/')
def index():
    class Person:
        name = 'LQ'
        gender = '男'

    p = Person()

    # 渲染模板，可以传递对象。如果是多个参数，可以通过**传递
    context = {
        'name': 'LQ',
        'gender': '男',
        'age': '18',
        'person': p,
        'websites': {
            'baidu': 'www.baidu.com',
            'google': 'www.google.com'
        }
    }
    # 也可以通过关键字参数传递。
    return render_template('index.html', username='test', **context)


@app.route('/for')
def for_statement():
    user = {
        'name': 'lq',
        'age': 18
    }
    websites = ['www.baidu.com', 'www.google.com']
    return render_template('forStatement.html', user=user, websites=websites)


@app.route('/books')
def book_list():
    books = [
        {
            'name': '西游记',
            'author': '吴承恩',
            'price': 100
        },
        {
            'name': '红楼梦',
            'author': '曹雪芹',
            'price': 200
        },
        {
            'name': '三国演义',
            'author': '罗贯中',
            'price': 101
        },
        {
            'name': '水浒传',
            'author': '施耐庵',
            'price': 102
        }

    ]
    return render_template('booklist.html', books=books)


@app.route('/filters')
def filters():
    return render_template('filters.html')


# 参数必须用<>包裹起来，视图函数的参数名必须和route中的保持一致。
@app.route('/article/<article_id>/<is_login>')
def article(article_id, is_login):
    if is_login == '1':
        return '请求的参数是:{}'.format(article_id)
    else:
        # url_for获取路径时，参数必须以关键字形式给出
        return redirect(url_for('login', platform='Mac OS X'))


@app.route('/login/<platform>')
def login(platform):
    return '这是登录页面:{}'.format(platform)


if __name__ == '__main__':
    # 设置debug模式
    app.run(debug=True)
